<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>InitPHP框架 - A PHP Framework -Unittesting</title>
<link href="static/common.css" type="text/css" rel="stylesheet" />
<meta name="keywords" content="php框架，国产php框架, initphp框架，MVC，分层体系" />
<meta name="description" content="initphp框架是一款国产php框架。initphp框架主要基于MVC模式，具备代码清晰，操作简单，功能齐全，开发快速，高效安全等特点，是您选择php框架的首选。" />
</head>
<body>
<div class="header">
  <div class="header_nav">InitPHP (A PHP Framework) 用户手册</div>
  <div class="header_div">
    <div class="header_title">第6章 6.6.9 Unittesting</div>
    <div class="header_right"><a href="6_6_8.htm">上一页</a> <a href="6_7_1.htm">下一页</a> </div>
  </div>
</div>
<div class="title">
  <h3>工具描述：</h3>
</div>
<p>主要用来测试应用的Service接口代码。单元测试可以保证用户的Service代码的稳定性。详细会在使用帮助中介绍。属于InitPHP框架工具类，需要通过$this->getUtil()方法获取</p>
<div class="title">
  <h3>使用方法：</h3>
</div>
<pre id="php" class="php">
$unittesting = $this->getUtil('unittesting'); 
</pre>
<div class="nav"></div>
<div class="title">
  <h4>接口描述：</h4>
</div>
<div class="jk"> 接口：$unittesting->run($file = '') 系统自动加载需要单元测试的文件</div>
<table >

    <tr >
      <th style="width:20%;"> 参数 </th>
      <th style="width:20%;"> 类型 </th>
      <th style="width:10%;"> 是否必须 </th>
      <th style="width:50%;"> 描述 </th>
    </tr>
    <tr>
      <td>$file</td>
      <td>String</td>
      <td>是</td>
      <td>1. 为空，则单元测试所有Sevice代码2. 数组则检测数组中的单元测试文件 3.字符串，单个文件检测</td>
    </tr>
</table>
<div class="jk"> 接口：$unittesting->add_data($function_param, $forecast_result, $type = '=') 添加预测数据</div>
<table>

    <tr >
      <th style="width:20%;"> 参数 </th>
      <th style="width:20%;"> 类型 </th>
      <th style="width:10%;"> 是否必须 </th>
      <th style="width:50%;"> 描述 </th>
    </tr>
    <tr>
      <td>$function_param </td>
      <td>String</td>
      <td>是</td>
      <td>方法传递的参数</td>
    </tr>
	    <tr>
      <td>$forecast_result </td>
      <td>String</td>
      <td>是</td>
      <td>预测结果的值</td>
    </tr>
		    <tr>
      <td>$type </td>
      <td>String</td>
      <td>否</td>
      <td>预测结果的类型 'type', '=', '!=', '!==','>', '<' 类型比较|值=号比较|不等于比较|大于比较|小于比较</td>
    </tr>
</table>

<div class="jk"> 接口：$unittesting->test($function) 预测数据</div>
<table>
    <tr >
      <th style="width:20%;"> 参数 </th>
      <th style="width:20%;"> 类型 </th>
      <th style="width:10%;"> 是否必须 </th>
      <th style="width:50%;"> 描述 </th>
    </tr>
    <tr>
      <td>$function</td>
      <td>String</td>
      <td>是</td>
      <td>方法名称</td>
    </tr>

</table>
<div class="title">
  <h3>实例：</h3>
</div>
<pre id="php" class="php">
/***************单元测试使用需要配置initphp.conf.php****************/
/* 单元测试文件后缀名称 */
$InitPHP_conf['unittesting']['test_postfix'] = $InitPHP_conf['service']['service_postfix'] . 'Test'; //文件后缀
$InitPHP_conf['unittesting']['path'] = 'lib/test/'; //单元测试文件夹目录
/* 如何运行单元测试 */
$this->load('unittesting', 'u')->run($file = '');
//1. $file = 'user' 则只是测试userService数据
//2. $file = array('user', 'test'); 只是测试user和test Service数据
//3. $file = ''; 跑起整个测试
/* 如何编写单元测试用例 */
class userServiceTest {
    
    //单元测试核心函数 run($self)
    public function run($self) {
        $self->add_data(array('woshishen'), 'array', 'type'); //添加预测数据
        $self->add_data(array('woshishen'), 'array', 'type'); //添加预测数据
        $self->test('get_by_username'); //对get_by_username函数进行预测 会自动清空上面的预测数据
        $self->add_data(array('woshishend@qq.com'), 'array', 'type'); //继续添加预测数据
        //注意：'type', '=', '!=', '!==','>', &lt; 有这么多种对应的预测比较方法 （类型比较|值=号比较|不等于比较|大于比较|小于比较）
        $self->test('get_by_email'); //对get_by_email进行预测
    }
} </pre>
<div class="footer">版权所有：<a href="">http://initphp.com</a> InitPHP (A PHP Framework) By @Aliyun_zhuli</div>
<script src="static/jquery.js" type="text/javascript"></script>
<link href="static/prettify/prettify.css" rel="stylesheet" type="text/css">
<script src="static/prettify/prettify.js" type="text/javascript"></script>
<script type="text/javascript" src="static/comm.js"></script>
</body>
</html>
